<?php
declare (strict_types = 1);

namespace app\controller;



use app\common\model\WechatAutoreplay;
use app\common\model\WechatSubscribe;
use app\common\model\WechatUnsubscribe;

use EasyWeChat\Factory;

/**
 * Class Awechat
 * @package app\controller
 * 后台 微信相关配置文件 包含了验证
 */
class Server extends Common
{
    public function __construct()
    {
        parent::__construct();

    }

    public function server()
    {
        $app = Factory::officialAccount(config("wechat"));



        $app->server->push(function ($message) {
            // $message['FromUserName'] // 用户的 openid
            // $message['MsgType'] // 消息类型：event, text....
            switch ($message['MsgType']) {
                case 'event':
                    return $this->handle_event($message); //如关注等
                    break;
                case 'text':
                    return $this->handle_text($message);
                    break;
                case 'image':
                    return '收到图片消息,我暂时还没有学会怎么回复您哦~';
                    break;
                case 'voice':
                    return '收到语音消息,我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸';
                    break;
                case 'video':
                    return '收到视频消息,我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸';
                    break;
                case 'location':
                    return '收到坐标消息,我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸';
                    break;
                case 'link':
                    return '收到链接消息,我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸';
                    break;
                case 'file':
                    return '收到文件消息,我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸';
                // ... 其它消息
                default:
                    return '收到其它消息,我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸';
                    break;
            }
        });
        $response = $app->server->serve();

        // 将响应输出
        $response->send();exit; // Laravel 里请使用：return $response;
    }

    //处理文本消息
    public function handle_text($message)
    {
        $key = $message["Content"];
        $map["keyword"] = $key;
        $value = WechatAutoreplay::where($map)->find();
        if($value){
            return $value["value"];
        }
        if(strlen($key) >= 4){
            return $key."?确定？我们的网址http://micuer.com，有惊喜哦";
        }
        return "欢迎关注我们的公众号!我暂时还没有学会怎么回复您哦~，有问题请找我的工程师爸爸，或者打开micuer.com,进行搜索";

    }

    public function handle_event($message)
    {
        $key = $message["Event"];
        $openid = $message["FromUserName"];
        $d["openid"] = $openid;
        if($key == "subscribe"){

            WechatSubscribe::create($d);
            return config('wechat.subscribe');
        }
        //unsubscribe
        if($key == "unsubscribe"){
            WechatUnsubscribe::create($d);
            return config('wechat.subscribe');
        }

    }

}
